package laboratoryQ.experiment;

import laboratoryQ.experiment.settings.IExperimentSettings;

public interface IExperiment {
	public static interface IExpRunStatusHandler {
		void stepsProcessed(int processed, int total);
		void handleExperimentResult(IExperimentResult expResult);
	}
	public static class NOPExpRunStatusHandler implements IExpRunStatusHandler {
		public static final IExpRunStatusHandler INSTANCE = new NOPExpRunStatusHandler();
		@Override
		public void stepsProcessed(int processed, int total) {
		}
		@Override
		public void handleExperimentResult(IExperimentResult expResult) {
		}
	}
	public IExperimentResult runExperiment(IExperimentSettings settings, IExpRunStatusHandler expRunStatusHandler);
}
